package view;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

import controller.EditeurActionController;

public class BarreMenu extends JMenuBar{
	// Menu Fichier
	private JMenu fichier = new JMenu();
	private JMenuItem ouvrir = new JMenuItem();
	private JMenuItem enregistrer = new JMenuItem();
	private JMenuItem enregistrerSous = new JMenuItem();
	private JMenuItem quitter = new JMenuItem();
	
	// Menu Edition
	private JMenu edition = new JMenu();
	private JMenuItem annuler = new JMenuItem();
	private JMenuItem retablir = new JMenuItem();
	private JMenuItem reinitialiser = new JMenuItem();
	
	// Menu Aide
	private JMenu aide = new JMenu();
	private JMenuItem help = new JMenuItem();
	private JMenuItem aPropos = new JMenuItem();
	
	private EditeurActionController editeurActionController;
	
	public BarreMenu(final EditeurActionController editeurActionController){
		fichier.setText("Fichier");
		
		ouvrir.setText("Ouvrir");
		ouvrir.setIcon(new ImageIcon("images/images/dossier.png"));
		ouvrir.setEnabled(true);
		
		enregistrer.setText("Enregistrer");
		enregistrer.setIcon(new ImageIcon("images/images/btn_menu_save_16.gif"));
		enregistrer.setEnabled(true);
		
		enregistrerSous.setText("Enregistrer Sous");
		enregistrerSous.setIcon(new ImageIcon("images/images/btn_menu_save_16.gif"));
		enregistrerSous.setEnabled(true);
		
		quitter.setText("Quitter");
		quitter.setEnabled(true);
		
		fichier.add(ouvrir);
		
		fichier.addSeparator(); // Ajoute une barre de séparation dans le menu

		fichier.add(enregistrer);
		fichier.add(enregistrerSous);
		
		fichier.addSeparator();
		
		fichier.add(quitter);

		edition.setText("Edition");
		
		annuler.setText("Annuler");
		annuler.setIcon(new ImageIcon("images/images/btn_menu_undo_16.gif"));
		annuler.setEnabled(true);
		
		retablir.setText("Rétablir");
		retablir.setIcon(new ImageIcon("images/images/btn_menu_redo_16.gif"));
		retablir.setEnabled(true);
		
		reinitialiser.setText("Réinitialiser la zone d'édition");
		annuler.setEnabled(true);
		
		edition.add(annuler);
		edition.add(retablir);
		edition.add(reinitialiser);
		
		aide.setText("Aide");
		
		help.setText("Aide de Tortle Prog");
		help.setEnabled(true);
		
		aPropos.setText("A Propos de Tortle Prog");
		aPropos.setEnabled(true);
		
		aide.add(help);
		aide.add(aPropos);
		this.add(fichier);
		this.add(edition);
		this.add(aide);
		
		ActionListener open = new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				editeurActionController.doOpen();
			}
		};
		
		ActionListener save = new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				editeurActionController.doSave();
			}
		};
		
		ActionListener exit = new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				editeurActionController.doExit();
			}
		};
		
		ActionListener undo = new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				editeurActionController.doUndo();
			}
		};
		
		ActionListener redo = new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				editeurActionController.doRedo();
			}
		};
		
		ActionListener reset = new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				editeurActionController.doReset();
			}
		};
		
		ActionListener helpFrame = new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				editeurActionController.doHelp();
			}
			
		};
		
		ActionListener aProposFrame = new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				editeurActionController.doAPropos();
			}
			
		};
		
		ouvrir.addActionListener(open);
		enregistrer.addActionListener(save);
		enregistrerSous.addActionListener(save);
		quitter.addActionListener(exit);
		
		annuler.addActionListener(undo);
		retablir.addActionListener(redo);
		reinitialiser.addActionListener(reset);
		
		help.addActionListener(helpFrame);
		aPropos.addActionListener(aProposFrame);
		
	}

}
